package com.ssd.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ssd.entity.SkuEntity;
import com.ssd.mapper.SkuDao;
import com.ssd.service.SkuService;
import com.ssd.view.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class SkuServiceImpl extends ServiceImpl<SkuDao, SkuEntity> implements SkuService {

    @Autowired
    private SkuDao skuDao;

    /**
     * 分页查询商品列表，支持模糊查询
     *
     * @param pageNum  当前页码
     * @param pageSize 每页大小
     * @param skuName  商品名称，用于模糊匹配
     * @return 分页的商品集合
     */
    @Override
    public Page<Map<String, Object>> getSkuListWithClass(int pageNum, int pageSize, String skuName,String innerCode) {
        Page<Map<String, Object>> page = new Page<>(pageNum, pageSize);
        return skuDao.selectSkuWithClass(page, skuName,innerCode);
    }

    /**
     * 根据主键查询商品详情
     *
     * @param skuId 商品主键
     * @return 商品详情
     */
    @Override
    public SkuEntity selectSkuBySkuId(Long skuId) {
        return skuDao.selectById(skuId);
    }

    /**
     * 新增商品信息
     *
     * @param sku 商品实体
     * @return 影响的行数
     */
    @Override
    public int insertSku(SkuEntity sku) {
        return skuDao.insert(sku);
    }

    /**
     * 修改商品信息
     *
     * @param sku 更新后的商品实体
     * @return 影响的行数
     */
    @Override
    public int updateSku(SkuEntity sku) {
        return skuDao.updateById(sku);
    }

    /**
     * 批量删除商品信息
     *
     * @param skuIds 需要删除的商品主键数组
     * @return 影响的行数
     */
    @Override
    public int deleteSkuBySkuIds(Long[] skuIds) {
        return skuDao.deleteBatchIds(java.util.Arrays.asList(skuIds));
    }

    /**
     * 删除指定ID的商品信息
     *
     * @param skuId 商品主键
     * @return 影响的行数
     */
    @Override
    public int deleteSkuBySkuId(Long skuId) {
        return skuDao.deleteById(skuId);
    }

    //根据id查询商品
    @Override
    public BaseResponse<com.ssd.api.product.dto.SkuEntity> getSkuById(Long sukId) {
        SkuEntity sku=baseMapper.selectById(sukId);
        return new BaseResponse (sku);
    }

    // 根据商品id集合查询sku列表
    @Override
    public List<SkuEntity> getSkusByIds(List<Long> skuIds) {
        return baseMapper.selectBatchIds(skuIds);
    }
}